package com.fightingFish.user.service;

import com.fightingFish.user.bean.Record;
import com.fightingFish.user.bean.User;

import java.util.ArrayList;

public interface UserService {

    /**
     * 方法描述：从user表中查询电话号码是否存在
     *
     * @param phone 查询的电话号码
     * @return 是否存在
     */
    boolean queryPhoneFromUser(String phone);

    /**
     * 方法描述：从temp表中查询电话号码是否存在
     *
     * @param phone 查询的电话号码
     * @return true ：存在
     * false ：不存在
     */
    boolean queryPhoneFromTemp(String phone);

    /**
     * 方法描述：用户手机号注册获取验证码
     *
     * @param phone 手机号
     * @return
     */
    String phoneRegisterVeriCode(String phone);

    /**
     * 方法描述：用户手机号登陆获取验证码
     * @param phone
     * @return
     */
    String phoneLoginVeriCode(String phone);


    /**
     * 方法描述：发送短信验证码
     *
     * @param mark  访问标识（登陆还是注册）
     * @param phone 手机号
     * @return
     */
    String smsSend(String mark, String phone);


    /**
     * 用户手机号注册
     * @param phone
     * @param veriCode
     * @return
     */
    boolean phoneRegister(String phone, String veriCode);

    /**
     * 手机号登陆
     * @param phone
     * @return
     */
    User phoneLogin(String phone, String veriCode);

    /**
     * 通过用户ID查询用户个人信息
     */
    User selectInfoByid(Integer userId);

    /**
     *  用户可以修改个人的基本信息
     * （密码，头像，昵称，性别，个性签名，手机号，邮箱）
     *  返回一个布尔值判断是否修改成功
     */
    boolean updateInfo(Integer userId, String photoImgUrl, String nickName, String sex, String signInfo, String phone, String email);

    /**
     *  通过用户id找到该用户充值鱼币
     *  返回一个充值后的金额
     */
    Double rechargeBalance(Integer userId, Double investMoney);

    /**
     *  通过用户id找到该用户的消费记录
     */
    ArrayList<Record> selectRecordByid(Integer userId);

    /**
     * 通过主播id找到该主播收入记录
     *
     * @param AnchorId
     * @return
     */
    ArrayList<Record> selectRecordByAnchorId(Integer AnchorId);

    /**
     * 方法概述： 用户购买礼物时信息 变更余额
     * @param phone
     * @return
     */
    String upDatePrice(String phone,Double price,int userId,Double balance);

    /**
     * 用户签到
     * @param userId
     * @return
     */
    boolean signDay(int userId);
}
